package com.baichang.taoshunda.dao;

import com.baichang.framework.dao.BaseDao;
import com.baichang.framework.model.Page;
import com.baichang.taoshunda.entity.OrderDetails;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface OrderDetailsDao extends BaseDao<OrderDetails> {

    /**
     * 根据订单编号获取订单详情信息（商品）
     *
     * @param orderNumber 订单编号
     * @return
     */
    List<Map<String, Object>> findOrderDetailsByOrderNumber(String orderNumber);

    /**
     * 修改商品的月售
     *
     * @param orderNumber
     * @return
     */
    List<Map<String, Object>> getGoodsList(String orderNumber);

    /**
     * @param orderNumber
     * @param nowPage
     * @param pageSize    @return
     */
    Page businessOrderDetail(String orderNumber, int nowPage, int pageSize);

    /**
     * @param nowPage
     * @param pageSize
     * @param id
     * @param cstart
     * @param jyjlzffs
     * @return
     */
    Page getOrderListByGoodsId(int nowPage, int pageSize, int id, String cstart, Integer jyjlzffs);

    /**
     * 修改订单详情状态
     *
     * @param orderDetailId 订单购物想起编号
     * @param status        退货状态   0已退货    1未退货 2申请退货 3商家同意退货
     * @return
     */
    boolean updateStatus(int orderDetailId, int status);

    /**
     * 修改状态为同意退货
     *
     * @param status      退货状态   0已退货    1未退货 2申请退货 3商家同意退货
     * @param orderNumber 订单号
     */
    void updateStatusByOrderNumber(String orderNumber, int status);

    /**
     * 查询该订单所有的金额
     *
     * @param orderNumber 订单号
     * @return
     */
    BigDecimal getAllMoney(String orderNumber);

    /**
     * 查询退货的金额
     *
     * @param orderNumber 订单号
     * @param status      退货状态   0已退货    1未退货 2申请退货 3商家同意退货
     * @return
     */
    BigDecimal getReturnMoney(String orderNumber, int status);

    /**
     * 功能描述:
     *
     * @param: id 订单编号
     * @return:
     * @auther: wsl
     * @date: 2018/11/27 16:50
     */
    int getExtraction(Integer id);

    /**
     * 功能描述:
     *
     * @param orderNumber 订单号
     * @param status
     * @return:
     * @auther: wsl
     * @date: 2018/11/30 14:28
     */
    OrderDetails getGoodsByOrderNumber(String orderNumber, int status);

    /**
     * 功能描述:
     * 查询商品数量
     *
     * @param orderNumber
     * @return:
     * @auther: wsl
     * @date: 2018/12/4 13:45
     */
    int getGoodsNUmberByOrderNumber(String orderNumber);

    /**
     * 功能描述:
     * 查询没有同意退货子订单的数量
     *
     * @param orderNumber
     * @return:
     * @auther: wsl
     * @date: 2019/1/26 18:32
     */
    int getNoReturnCount(String orderNumber);

    /**
     * 功能描述:
     *
     * @param orderNumber 修改同意退款的状态的子订单为已退款状态
     * @return:
     * @auther: wsl
     * @date: 2019/1/26 18:44
     */
    void updateIsReturn(String orderNumber);
    /**
     *
     * 功能描述:
     *
     * @param  orderDetailId 订单编号
     * @param  orderDetailId 修改状态
     * @return:
     * @auther: wsl
     * @date: 2019/1/29 17:42
     */
    boolean updateStatusByOrderDetailsId(Integer orderDetailId, int i);
}